package net.tksl.crm.controller;

import net.tksl.crm.controller.view.bean.LoginBean;
import net.tksl.crm.controller.view.bean.UsuarioSistemaBean;
import net.tksl.crm.service.UsuarioAccesoService;
import net.tksl.crm.util.CifradorClave;
import net.tksl.crm.util.WebUtil;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.opensymphony.xwork2.ActionSupport;

@Controller("loginAction")
@Scope(value="prototype")
public class LoginAction extends ActionSupport{

	private static final long serialVersionUID = 1L;

	@Autowired
	@Qualifier("usuarioAccesoServiceImpl")
	private UsuarioAccesoService usuarioAccesoService;

	private LoginBean loginBean;

	public LoginAction(){}

	public String iniciarSesion(){

		String resultado = "";
		String usuario = "";
		String clave = "";
		
		if(loginBean!=null){
			usuario = loginBean.getUsuario();
			clave = loginBean.getClave();
		}
		
		String hashClave = CifradorClave.getStringMessageDigest(clave,CifradorClave.SHA1);
		
		UsuarioSistemaBean usuarioSistema = usuarioAccesoService.validarAccesoSistema(usuario,hashClave);
		if(usuarioSistema!=null){
			if(usuarioSistema.getUsuarioExiste()){
				if(usuarioSistema.getLoginCorrecto()){
					WebUtil.crearAtributoSesion("usuarioSistema",usuarioSistema);
					resultado = "exito-login";
				}else{
					resultado = "error-login";
				}
			}else{
				resultado = "error-login";
			}
		}
		return resultado;	
	}
	
	public String cerrarSesion(){
		WebUtil.eliminarAtributoSesion("usuarioSistema");
		return "salirSistema";
	}

	public LoginBean getLoginBean() {
		return loginBean;
	}

	public void setLoginBean(LoginBean loginBean) {
		this.loginBean = loginBean;
	}

	/*
	public String validarUsuario(){
		FacesContext facesContext = FacesContext.getCurrentInstance();
		ExternalContext externalContext = facesContext.getExternalContext();
		HttpServletRequest request = (HttpServletRequest)externalContext.getRequest();
		
		String usuario = request.getParameter(idFormulario+":usuario");
		String clave = request.getParameter(idFormulario+":clave");
		
		FacesMessage msg = null;
		
		String idComponente = idFormulario+":"+idNotificacion;
		
		String hashClave = CifradorClave.getStringMessageDigest(clave,CifradorClave.SHA1);
		String pagina = "login";
		
		if(usuario.trim().equals("")){
			JsfUtil.agregarMensaje(facesContext,msg,idComponente,"Error", "El usuario no debe estar vac\u00edo",FacesMessage.SEVERITY_ERROR); 
		}else{
			if(clave.trim().equals("")){
				JsfUtil.agregarMensaje(facesContext,msg,idComponente,"Error", "La clave no debe ser vac\u00eda",FacesMessage.SEVERITY_ERROR); 
			}else{
				UsuarioSistemaBean usuarioSistema = usuarioAccesoService.validarAccesoSistema(usuario,hashClave);
				if(usuarioSistema!=null){
					if(usuarioSistema.getUsuarioExiste()){
						if(usuarioSistema.getLoginCorrecto()){
							JsfUtil.crearAtributoSesion("usuarioSistema",usuarioSistema);
							pagina = "admin?faces-redirect=true";
						}else{
							request.setAttribute("usuario",usuario);
							JsfUtil.agregarMensaje(facesContext,msg,idComponente,"Error", "Verifique el usuario y la clave",FacesMessage.SEVERITY_ERROR); 
						}
					}else{
						request.setAttribute("usuario",usuario);
						JsfUtil.agregarMensaje(facesContext,msg,idComponente,"Error", "El usuario no existe",FacesMessage.SEVERITY_ERROR); 
					}
				}
			}
			
		}

		return pagina;
	}

	public String cerrarSesion(){
		String pagina = "login?faces-redirect=true";
		JsfUtil.eliminarAtributoSesion("usuarioSistema");
		return pagina;
	}*/

}